Many of today's computing environments require an ability to share large amounts of data among different types of software applications. However, distributed applications may be markedly different in their configurations due to, for example, differences in their types of data supported; or their execution environments. An application's configuration may depend, for example, on its application programming interfaces, runtime environment, deployment scheme, lifecycle management, or security management.
Software design tools intended for use in developing such distributed applications tend to be resource-intensive, often requiring the services of a human domain model expert to curate application and data integrations. Consequently, application developers who are faced with the task of building complex, scalable, distributed applications, that will be used to integrate different types of data among different types of execution environments, must generally expend a substantial amount of manual effort to design, build, and configure those applications.